#include <iostream>
using namespace std;

class Cat
{
public:
    void catchMouse()
    {
        /*
        this指针底层实现：
            编译器提前写了如下代码：
            Cat *this=&当前对象;
            当前对象如何确定呢？--》看代码调用
            wangcai.catchMouse() ;Cat *this=&wangcai;
            ahuang.catchMouse () ;Cat *this=&ahuang;
            ahua.catchMouse () ;  Cat *this=&wangcai;

        指向当前对象的一个指针，哪个对象调用成员函数，this指针就指向该对象
        写法
            this->age     //指针调用
            (*this).age   //this解引用  
        */
        cout << "catchMouse 当前猫地址是:" << this << endl;
    }
};

int main()
{
    Cat wangcai;
    Cat ahuang;
    Cat ahua;

    cout << "wangcai地址是:" << &wangcai << endl;
    cout << "ahuang地址是:" << &ahuang << endl;
    cout << "ahua地址是:" << &ahua << endl;

    wangcai.catchMouse();
    ahuang.catchMouse();
    ahua.catchMouse();

    return 0;
}